import { request } from '@/utils/request'

interface VeideoStatModel {
  aid: number
  view: number //播放量
  danmaku: number //弹幕量
  reply: number //评论数
  favorite: number //收藏数
  coin: number //投币数
  share: number //分享数
  now_rank: number //视频当前排行
  his_rank: number //视频历史最高排行
  like: number //点赞数
  evaluation: string //视频评分
}

interface VeideoPageModel {
  cid: number //当前分p的cid
  page: number //当前分p
  part: string //分p标题
  duration: number //分p时长,时间戳,需要格式化
}

interface OwnerModel {
  mid: number //up主mid
  name: string //up主昵称
  face: string //头像图url
}

export interface RegionModel {
  //在请求视频详细信息时，adi和bvid必须传其中一个
  aid: number
  bvid: string
  videos: number //分p总数 默认1
  tid: number //分区id
  copyright: 1 | 2 //1原创 2转载
  pic: string //封面url
  title: string //标题
  pubdate: number //发布时间，时间戳，需要格式化
  desc: string //视频简介
  desc_v2: { raw_text: string }[] //新版视频简介
  duration: number //所有分p总时长 单位秒
  redirect_url: string //重定向url 是b站的网址
  // rights: {} //视频属性标志
  //up主信息
  owner: OwnerModel
  stat: VeideoStatModel //视频状态信息
  cid: number //视频第1p的cid
  pages: VeideoPageModel[] //视频分P列表
}

/* 
顶部中间栏所有分区右边的个数
https://api.bilibili.com/x/web-interface/online
*/

// * ---------------轮播图右边的视频-------------
//和视频信息的对象类似，但是少了很多东西，而且没有aid字段，单独区分开接口
export interface TopVideoModel {
  av_feature: string
  id: number //没有aid，只有id
  bvid: string
  cid: number
  duration: number
  goto: string //'av'
  owner: OwnerModel
  pic: string
  pubdate: number
  stat: { view: number; like: number }
  title: string
  // uri: 'https://www.bilibili.com/video/BV1hR4y147Cg'
}

export const reqTopVideo = () =>
  request<{ item: TopVideoModel[] }>({
    url: '/web-interface/index/top/rcmd',
    params: { fresh_type: 3 },
  })

/* 
  //! 获取分区视频，rid必选，pn页码(换一换)，ps每页项数固定8个够了。需要Cookie(SESSDATA)
  https://api.bilibili.com/x/web-interface/dynamic/region?pn=2&ps=12&rid=1

  rid:
  1 动画
  13 番剧动态
  168 国创
  3 音乐
  129 舞蹈
  4 游戏
  36 知识
  188 科技
  234 运动
  223 汽车
  160 生活
  211 美食
  217 动物圈
  119 鬼畜
  155 时尚
  202 咨询
  5 娱乐
  181 影视
  177 纪录片
  23 电影
  11 电视剧
*/

export const reqRegion = (rid: number, pn: number) =>
  request<{ archives: RegionModel[] }>({
    url: '/web-interface/dynamic/region',
    params: { pn, ps: 8, rid },
  })

/* 
  //获取分区视频排行榜列表
  http://api.bilibili.com/x/web-interface/ranking/region  
  query: {
    rid:  分区id, 
    day: 可选. 3(默认)或7  三日榜或7日榜
  }
  */

export interface RankModel {
  aid: string
  author: string //作者
  badgepay: boolean
  bvid: string
  coins: number //硬币数
  create: string //'2021-11-28 22:41'
  description: string
  duration: string //'4:56'
  favorites: number //收藏数
  mid: number
  pic: string
  play: number //播放量
  pts: number //综合得分
  review: number
  subtitle: string
  title: string
  typename: string
  video_review: number //弹幕数
}

export const reqRank = (rid: number) =>
  request<RankModel[]>({
    url: '/web-interface/ranking/region',
    params: { rid },
  })

/* 
    获取视频详细信息(web端)Cookie(SESSDATA)
      http://api.bilibili.com/x/web-interface/view
      query: aid或bvid
    */
